home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / latex209 / contrib / feynman / photonsetup.tex < prev    next >
Text File  |  1992-07-02  |  11KB  |  246 lines

  1. %                            PHOTONSETUP(28).TEX
  2. % CALLED BY FEYNMAN(34).TEX.
  3. % USED FOR GENERATING PHOTON LINES IN FEYNMAN DIAGRAMS IN LATEX.
  4. \newcount\numwiggles    \newcount\numwigglespo
  5. \global\newcount\photonlengthx
  6. \global\newcount\photonlengthy
  7. \global\newcount\photonfrontx  %}(x,y) co-ord of left of photon
  8. \global\newcount\photonfronty  %}
  9. \global\newcount\photonbackx
  10. \global\newcount\photonbacky
  11. \newcount\halfwigglelength
  12. %
  13. \global\font\Twelverom=cmr12
  14. \global\font\Tenrom=cmr10
  15. \gdef\Lbr{{\Twelverom(}}   \gdef\Rbr{{\Twelverom)}}
  16. \gdef\SLbr{{\Tenrom(}}     \gdef\SRbr{{\Tenrom)}}
  17. %  Want \smile,\frown to always be 12-point but won't work!
  18. \gdef\Smile{{\large$\smile$}}  % Default for 10 and 11-point documents.
  19. \gdef\Frown{{\large$\frown$}}  % Default for 10 and 11-point documents.
  20. \ifdim\BIGPHOTONS>0pt  \gdef\Smile{$\smile$} \gdef\Frown{$\frown$} \fi
  21. %  For use with 12-point documents only.  Invoked by saying \bigphotons.
  22. %
  23. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  24. \gdef\selectphoton{   % RECURSIVELY RE-DEFINED HERE.  Define in FEYNMAN.
  25. \global\advance\photoncount by 1  % Counts number of photons drawn. 
  26. \global\photonfrontx=\particlefrontx   % READ IN FROM FEYNMAN \selectphoton
  27. \global\photonfronty=\particlefronty   % READ IN FROM FEYNMAN \selectphoton
  28. % Error messages for overly-long lines.  See FEYNMAN for negative-lengths.
  29. \ifnum\unitboxnumber > 50
  30. \message{   *** WARNING *** Photon with 
  31. \the\unitboxnumber\space half-wiggles requested ***   }
  32. \ifnum\unitboxnumber > 150
  33. \message{   *** Reducing photon length to 10 half-wiggles (max 150) ***   }
  34. \ifnum\unitboxnumber > 1000
  35. \message{   *** Probable Cause:  Photon selected instead of Fermion ***   }
  36. \fi \global\unitboxnumber=10 \fi \fi  % end of length error
  37. \numwiggles=\unitboxnumber
  38. \divide\numwiggles by 2
  39. \global\unitboxnumberpo=\numwiggles % here \unitboxnumberpo is an unused counter
  40. \global\multiply \unitboxnumberpo by -1
  41. \numwigglespo=\unitboxnumber
  42. \advance\numwigglespo by \unitboxnumberpo %\numwigglespo is one greater than 
  43. \global\numlineparts = 2  % DEFAULT                %\numwiggles in this case.
  44. \global\numupperunits=\numwigglespo  % DEFAULT
  45. \global\numlowerunits=\numwiggles  % DEFAULT
  46. \particleadjustx=0  %DEFAULT
  47. \particleadjusty=0  %DEFAULT
  48. % select photon alignment:
  49. \ifcase\LINEDIRECTION
  50.      \Nphoton    %\LINEDIRECTION=0 (NORTH) CASE
  51. \or  \NEphoton   % 1 case
  52. \or  \Ephoton    % 2 case...horizontal photon.
  53. \or  \SEphoton   % .
  54. \or  \Sphoton    % .
  55. \or  \SWphoton   % .
  56. \or  \Wphoton    % .
  57. \or  \NWphoton   % 7 case
  58. \else\DIRECTERROR \fi
  59. \setplength
  60. \global\divide\plengthx by 2  \global\divide\plengthy by 2
  61. \rearcoords  \boxlengthdefault   \midcoords
  62. \global\photonbackx=\pbackx  %PHOTONSETUP26
  63. \global\photonbacky=\pbacky  %PHOTONSETUP26
  64. \global\photonlengthx=\plengthx  %PHOTONSETUP26
  65. \global\photonlengthy=\plengthy  %PHOTONSETUP26
  66. }
  67. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  68. \gdef\SETUNITBOX(#1)[#2][#3]{ % For slanted photons only.
  69. \gdef\upperunitbox{\oval(#1,#1)[#2]}
  70. \gdef\lowerunitbox{\oval(#1,#1)[#3]}
  71. }
  72. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  73. \gdef\Nphoton{  % VERTICAL PHOTONS
  74. \ifcase\LINECONFIGURATION  %\REG case
  75. \setcoords(-490,-250,0)(260,1250,0)[0,2000]
  76. \gdef\upperunitbox{\SLbr}   \gdef\lowerunitbox{\SRbr}
  77. \particleadjusty=10
  78. \or % \FLIPPED case
  79. \setcoords(-271,-501,0)(250,1250,0)[0,2000]   
  80. \gdef\upperunitbox{\SRbr}   \gdef\lowerunitbox{\SLbr}
  81. \or %\CURLY case (a bit shorter).
  82. \particleadjusty=0
  83. \setcoords(-501,-351,0)(300,1400,0)[0,2200]
  84. \gdef\upperunitbox{\Lbr}   \gdef\lowerunitbox{\Rbr}
  85. \or %\FLIPPEDCURLY case.
  86. \setcoords(-353,-499,0)(300,1400,0)[0,2200]
  87. \gdef\upperunitbox{\Rbr}   \gdef\lowerunitbox{\Lbr}
  88. \or % \FLAT case.  Flatter and shorter than \CURLY.
  89. \setcoords(-481,-371,0)(280,1300,0)[0,2000]
  90. \gdef\upperunitbox{\Lbr}   \gdef\lowerunitbox{\Rbr}
  91. \particleadjusty=150
  92. \ifnum\numwiggles=\number\numwigglespo \particleadjustx=-50 \fi
  93. \or %\FLIPPEDFLAT case.  \LINECONFIGURATION=5.
  94. \setcoords(-321,-391,0)(280,1300,0)[0,2000]
  95. \gdef\upperunitbox{\Rbr}   \gdef\lowerunitbox{\Lbr}
  96. \particleadjusty=150
  97. \ifnum\numwiggles=\number\numwigglespo \particleadjustx=80 \fi
  98. \or % \LONGPHOTON
  99. \setcoords(-490,-260,0)(300,1500,0)[0,2400]
  100. \gdef\upperunitbox{\Lbr}   \gdef\lowerunitbox{\Rbr}
  101. \or % \FLIPPEDLONGPHOTON
  102. \setcoords(-301,-531,0)(300,1500,0)[0,2400]
  103. \gdef\upperunitbox{\Rbr}   \gdef\lowerunitbox{\Lbr}
  104. \else \UNIMPERROR
  105. \fi
  106. }
  107. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  108. \gdef\NEphoton{    % NE   SLANTED PHOTONS:  RE-ORDERED IN PHOTONSETUP27
  109. \ifcase\LINECONFIGURATION  %\REG case
  110. \setcoords(425,425,0)(1250,0,0)[1250,1250]       \SETUNITBOX(1250)[br][tl]  
  111. \ifnum\numwigglespo > \number \numwiggles \particleadjustx=15 \fi
  112. \or % \FLIPPED case
  113. \setcoords(1050,-200,0)(625,625,0)[1250,1250]    \SETUNITBOX(1250)[tl][br]
  114. \ifnum\numwigglespo > \number \numwiggles \particleadjustx=25 \fi
  115. \or % \CURLY case.
  116. \setcoords(500,500,0)(1400,0,0)[1400,1400]       \SETUNITBOX(1400)[br][tl]
  117. \or % \FLIPPEDCURLY case
  118. \setcoords(1200,-200,0)(700,700,0)[1400,1400]    \SETUNITBOX(1400)[tl][br]  
  119. \or % \FLAT case
  120. \setcoords(400,400,0)(1200,0,0)[1200,1200]       \SETUNITBOX(1200)[br][tl]  
  121. \or % \FLIPPEDFLAT case
  122. \setcoords(1000,-200,0)(600,600,0)[1200,1200]    \SETUNITBOX(1200)[tl][br]
  123. \else \UNIMPERROR
  124. \fi
  125. \numupperunits=\numwiggles   \numlowerunits=\numwigglespo
  126. }
  127. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  128. \gdef\Ephoton{    %  EASTWARD  HORIZONTAL PHOTONS
  129. \ifcase\LINECONFIGURATION  % REG case
  130. \setcoords(-285,715,0)(-150,-400,0)[2005,0]
  131. \gdef\upperunitbox{\Frown}   \gdef\lowerunitbox{\Smile}
  132. \or  % \FLIPPED case
  133. \setcoords(-285,715,0)(-420,-170,0)[2005,0]
  134. \gdef\upperunitbox{\Smile}   \gdef\lowerunitbox{\Frown}
  135. \else \UNIMPERROR
  136. \fi
  137. \particleadjustx=-15 % Lengths are in centipoints.
  138. }
  139. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  140. \gdef\SEphoton{   % SE   SLANTED PHOTONS:  RE-ORDERED IN PHOTONSETUP27
  141. \ifcase\LINECONFIGURATION  %\REG case
  142. \setcoords(-200,1050,0)(-625,-625,0)[1250,-1250] \SETUNITBOX(1250)[tr][bl]
  143. \ifnum\numwigglespo > \number \numwiggles \particleadjustx=25 \fi
  144. \or % \FLIPPED case
  145. \setcoords(425,425,0)(0,-1250,0)[1250,-1250]     \SETUNITBOX(1250)[bl][tr]
  146. \ifnum\numwigglespo > \number \numwiggles \particleadjustx=15 \fi
  147. \or % \CURLY case.
  148. \setcoords(-200,1200,0)(-700,-700,0)[1400,-1400] \SETUNITBOX(1400)[tr][bl]  
  149. \or % \FLIPPEDCURLY case
  150. \setcoords(500,500,0)(0,-1400,0)[1400,-1400]     \SETUNITBOX(1400)[bl][tr]  
  151. \or % \FLAT case
  152. \setcoords(-200,1000,0)(-600,-600,0)[1200,-1200] \SETUNITBOX(1200)[tr][bl]
  153. \particleadjustx=-20
  154. \or % \FLIPPEDFLAT case
  155. \setcoords(420,420,0)(0,-1200,0)[1200,-1200]     \SETUNITBOX(1200)[bl][tr]
  156. \particleadjustx=40
  157. \else \UNIMPERROR
  158. \fi
  159. }
  160. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  161. \gdef\Sphoton{  % DOWN, DOWN VERTICAL PHOTONS
  162. \ifcase\LINECONFIGURATION  %\REG case
  163. \setcoords(-252,-490,0)(-740,-1740,0)[0,-2000]
  164. \gdef\upperunitbox{\SRbr}   \gdef\lowerunitbox{\SLbr}
  165. \or % \FLIPPED case
  166. \setcoords(-490,-260,0)(-740,-1740,0)[0,-2002]
  167. \gdef\upperunitbox{\SLbr}   \gdef\lowerunitbox{\SRbr}
  168. \or %\CURLY case (a bit shorter).
  169. \setcoords(-299,-449,0)(-870,-1970,0)[0,-2200]
  170. \gdef\upperunitbox{\Rbr}    \gdef\lowerunitbox{\Lbr}
  171. \particleadjusty=-95
  172. \or %\FLIPPEDCURLY case.
  173. \setcoords(-517,-371,0)(-900,-2000,0)[0,-2200]
  174. \gdef\upperunitbox{\Lbr}    \gdef\lowerunitbox{\Rbr}
  175. \particleadjusty=-165
  176. \or % \FLAT case.  Flatter and shorter than \CURLY.  \LINECONFIGURATION=4.
  177. \setcoords(-299,-409,0)(-885,-1905,0)[0,-2000]
  178. \gdef\upperunitbox{\Rbr}   \gdef\lowerunitbox{\Lbr}
  179. \particleadjustx=50     \particleadjusty=-380
  180. \ifodd\unitboxnumber\relax\else\particleadjustx=250 \particleadjusty=-400 \fi
  181. \or %\FLIPPEDFLAT case.  \LINECONFIGURATION=5.
  182. \setcoords(-519,-449,0)(-900,-1920,0)[0,-2000]
  183. \gdef\upperunitbox{\Lbr}   \gdef\lowerunitbox{\Rbr}
  184. \particleadjusty=-370
  185. \ifodd\unitboxnumber\relax\else\particleadjustx=-240 \particleadjusty=-400 \fi
  186. \or % \LONGPHOTON
  187. \gdef\upperunitbox{\Rbr}   \gdef\lowerunitbox{\Lbr}
  188. \setcoords(-325,-555,0)(-900,-2100,0)[0,-2400]
  189. \particleadjusty=-40
  190. \or % \FLIPPEDLONG
  191. \setcoords(-505,-275,0)(-900,-2100,0)[0,-2400]
  192. \gdef\upperunitbox{\Lbr}   \gdef\lowerunitbox{\Rbr}
  193. \particleadjusty=-30  % Lengths are in centipoints.
  194. \else \UNIMPERROR
  195. \fi
  196. }
  197. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  198. \gdef\SWphoton{  % SW SLANTED PHOTONS:  RE-ORDERED IN PHOTONSETUP27
  199. \ifcase\LINECONFIGURATION  %\REG case
  200. \setcoords(-825,-825,0)(0,-1250,0)[-1250,-1250]     \SETUNITBOX(1250)[br][tl]  
  201. \or % \FLIPPED case
  202. \setcoords(-175,-1425,0)(-625,-625,0)[-1250,-1250]  \SETUNITBOX(1250)[tl][br]  
  203. \or % \CURLY case.
  204. \setcoords(-900,-900,0)(0,-1410,0)[-1400,-1400]     \SETUNITBOX(1400)[br][tl]  
  205. \or % \FLIPPEDCURLY case
  206. \setcoords(-200,-1600,0)(-700,-700,0)[-1400,-1400]  \SETUNITBOX(1400)[tl][br]  
  207. \or % \FLAT case
  208. \setcoords(-800,-800,0)(0,-1200,0)[-1200,-1200]     \SETUNITBOX(1200)[br][tl]  
  209. \or % \FLIPPEDFLAT case
  210. \setcoords(-200,-1400,0)(-600,-600,0)[-1200,-1200]  \SETUNITBOX(1200)[tl][br]  
  211. \else \UNIMPERROR
  212. \fi
  213. }
  214. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  215. \gdef\Wphoton{
  216. \ifcase\LINECONFIGURATION %\REG case
  217. \setcoords(-2245,-1245,0)(-150,-400,0)[-2005,0]
  218. \gdef\upperunitbox{\Frown}   \gdef\lowerunitbox{\Smile}
  219. \or % \FLIPPED case
  220. \setcoords(-2245,-1245,0)(-400,-150,0)[-2005,0]
  221. \gdef\upperunitbox{\Smile}   \gdef\lowerunitbox{\Frown}
  222. \else \UNIMPERROR
  223. \fi
  224. \particleadjustx=57 % Lengths are in centipoints.
  225. \ifnum\numwigglespo=\number\numwiggles \particleadjustx=0  \fi
  226. \numlowerunits=\numwigglespo   \numupperunits=\numwiggles
  227. }
  228. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  229. \gdef\NWphoton{  % NW   SLANTED PHOTONS:  RE-ORDERED IN PHOTONSETUP27
  230. \ifcase\LINECONFIGURATION  %\REG case
  231. \setcoords(-200,-1425,0)(625,625,0)[-1250,1250]   \SETUNITBOX(1250)[bl][tr]
  232. \or % \FLIPPED case
  233. \setcoords(-825,-825,0)(0,1250,0)[-1250,1250]     \SETUNITBOX(1250)[tr][bl]
  234. \ifnum\numwigglespo > \number \numwiggles \particleadjusty=-15 \fi
  235. \or % \CURLY case.
  236. \setcoords(-200,-1600,0)(700,700,0)[-1400,1400]   \SETUNITBOX(1400)[bl][tr]
  237. \or % \FLIPPEDCURLY case
  238. \setcoords(-900,-900,0)(0,1400,0)[-1400,1400]     \SETUNITBOX(1400)[tr][bl]
  239. \or % \FLAT case.
  240. \setcoords(-200,-1400,0)(600,600,0)[-1200,1200]   \SETUNITBOX(1200)[bl][tr]  
  241. \or % \FLIPPEDFLAT case
  242. \setcoords(-800,-800,0)(0,1200,0)[-1200,1200]     \SETUNITBOX(1200)[tr][bl]  
  243. \else \UNIMPERROR
  244. \fi
  245. }
  246.